// 引入gulp自動化模塊
const gulp = require("gulp");
// const { series, gulp } = require("gulp");

//引入gulp-uglify模块，用于压缩JS
var uglify = require('gulp-uglify');

//需要引入 gulp-less 工具中间件来处理less的文件流编译
// const less = require("gulp-less");

//引入一个处理css补充兼容性前缀
const autoprefixer = require("gulp-autoprefixer");

// var imagemin = require('gulp-imagemin'); ////用于压缩image文件

var htmlmin = require('gulp-htmlmin'); //html压缩

//引入一个css压缩库
const miniCss = require("gulp-minify-css");

//引入生成sourcemap 映射文件库
const sourcemaps = require("gulp-sourcemaps");

//引入重命名库
// const rename = require("gulp-rename");

var cssmin = require("gulp-cssmin");

var nokey = require("gulp-tinypng-nokey");

var bable = require("gulp-babel");

// var gulp = require('gulp');
// var concat = require('gulp-concat');
// var uglify = require('gulp-uglify');
// var minifyHTML = require('gulp-minify-html');
// // var sourcemaps = require('gulp-sourcemaps');
// var minifyCSS = require('gulp-minify-css');
// var inlineCss = require('gulp-inline-css');
// var rev = require("gulp-rev");
// var del = require('del');
let gulp2 = require('gulp');
var rev = require('gulp-rev-dxb');
var revCollector = require('gulp-rev-collector-dxb');

var options = {
    collapseWhitespace: true, //压缩空格
    collapseBooleanAttributes: true, //省略布尔值
    // collapseWhitespace: true, //压缩
    removeComments: true, //注释清除
    removeEmptyAttributes: true, //删除空格
    // removeScriptTypeAttributes: true,//删除type="javascipt"
    // removeStyleLinkTypeAttributes: true,//删除type="text/css"
    //  collapseWhitespace: true, //  删除 标签之间的空格
    // minifyJS: true,
    minifyCSS: true,
    // removeAttributeQuotes: true, //删除属性中的双引号
};
gulp.task("default", (done) => { //压缩打包处理 ，gulp本身就连续单线程执行，不能加异步执行，会冲突
    done()
    console.log("gulp启动")
    gulp.src("./src/static/css/*.css")
        // .pipe(cssmin())  //会产生很多额外效果
        .pipe(miniCss()) //会产生很多额外效果
        .pipe(sourcemaps.init()) //初始化映射
        .pipe(sourcemaps.write()) //写入map映射信息;
        .pipe(
            autoprefixer({
                browsers: ["last 3 versions"], //配置需要考虑兼容的浏览器的版本信息 或在packgejson配置
                cascade: true, //是否美化格式
            })
        ).pipe(gulp.dest("./dist/static/css"));

    //  JS文件--------------------
    gulp.src("./src/static/js/*.js") //双*是选择全部多层文件目录
        // .pipe(sourcemaps.init()) //初始化映射
        // .pipe(sourcemaps.write()) //写入map映射信息;
        .pipe(bable())
        .pipe(uglify())
        .pipe(gulp.dest("./dist/static/js"));
    //   字体--------------------------
    // gulp.src("./src/*/fonts/*")
    // .pipe(gulp.dest("./dist"));

    //  图片------------------------
    // gulp.src("./src/*/*/*.{jpg,png,jpeg,gif,icon,ico}")
    // .pipe(nokey()) // 
    // .pipe(gulp.dest("./dist"));

    // 图片--------------------------
    // gulp.src("./src/*/*.{jpg,png,jpeg,gif,icon,ico}")
    // .pipe(nokey()) // 
    // .pipe(gulp.dest("./dist"));

    //html文件--------------------
    gulp.src('./src/static/css/*.css')
        .pipe(rev())
        .pipe(rev.manifest())
        .pipe(gulp.dest('./src/static/css/RevJson/css')); // 定义生成的mainfest.json所在的目录位置
    gulp.src('./src/static/js/*.js')
        .pipe(rev())
        .pipe(rev.manifest())
        .pipe(gulp.dest('./src/static/css/RevJson/js'));
    gulp.src(['./src/static/css/RevJson/*/*.json', './src/views/*.html']) // 项目中需要添加版本号的html文件
        .pipe(revCollector())
        .pipe(htmlmin(options))
        .pipe(gulp.dest("./dist/views"));




});







// function defaultTask2(cb) { //添加版本号
//     cb();
//     gulp2.src('./src/static/css/*.css')
//         .pipe(rev())
//         .pipe(rev.manifest())
//         .pipe(gulp2.dest('./src/RevJson')); // 定义生成的mainfest.json所在的目录位置
//     gulp2.src('./src/static/js/*.js')
//         .pipe(rev())
//         .pipe(rev.manifest())
//         .pipe(gulp2.dest('./src/RevJson'));
//     gulp2.src(['./RevJson/*.json', './src/views/*.html']) // 项目中需要添加版本号的html文件
//         .pipe(revCollector())
//         .pipe(gulp2.dest('./src/views2')); // 定义添加版本号之后的html文件所在的目录
// }
// exports.default = defaultTask2;